public class IsBalanced {
    public boolean isBalanced(TreeNode root) {
        if (root==null)
            return true;
        if (root.left!=null&&root.right!=null){
            if (Math.abs(depth(root.left)-depth(root.right))!=1){
                return false;
            }
            return isBalanced(root.left)&&isBalanced(root.right);
        }

        if (root.left==null&&root.right==null){
            return true;
        }
        if (root.left==null){
            if (depth(root.right)>1){
                return false;
            }
            return true;
        }else {
            if (depth(root.left)>1){
                return false;
            }
            return true;

        }
    }
    public int depth(TreeNode treeNode){
        if (treeNode==null)
            return 0;
        return Math.max(depth(treeNode.right)+1,depth(treeNode.left)+1);
    }
}
